# !/usr/bin/env python
# -*- coding: utf-8 -*-
# ------------------------------
''''''

# import socket
#
#
# def main():
#     # 创建套接字
#     tcp_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#     # 链接服务器
#     sever_ip = input('请输入链接的服务器ip:')
#     sever_port = int(input('请输入链接的服务器port:'))
#     sever_adderss = (sever_ip, sever_port)
#     tcp_client.connect(sever_adderss)
#     # 发送信息
#     send_content = input('请输入要发送的内容：')
#     tcp_client.send(send_content.encode('gbk'))
#     # 关闭套接字
#     tcp_client.close()
# if __name__ == '__main__':
#     main()

# import socket
#
#
# def main():
#     # 创建初始套接字
#     tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#     # 固定服务器的地址
#     sever_address = ('', 8848)
#     tcp_socket.bind(sever_address)
#     # 需要套接字去监听（改变套接字属性被动来连接）
#     tcp_socket.listen(128)    # listen 参数是可以服务的客户的个数
#     # 等待客户机的连接    # 返回值是个元组包括（新生成一个客服套接字，客户机的adddress（IP，port））
#     client_sever_socket, client_address = tcp_socket.accept()
#     # 接收信息并返回消息已接受
#     recv_content = client_sever_socket.recv(1024)
#     print(recv_content.decode('gbk'))
#     client_sever_socket.send('-------对方接收成功！-------'.encode('gbk'))
#     # 关闭客服套接字
#     client_sever_socket.close()
#     # 关闭初始套接字
#     tcp_socket.close()
# if __name__ == '__main__':
#     '''tcp实现服务器'''
#     main()



import socket


def main():
    # 创建初始套接字
    tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 固定服务器的地址
    sever_address = ('', 8848)
    tcp_socket.bind(sever_address)
    # 需要套接字去监听（改变套接字属性被动来连接）
    tcp_socket.listen(128)    # listen 参数是同时可以服务的客户的个数当有客户在接受服务的时候，多余的客户机就会在这里等待去连接
    while True:
        print('waiting a client to connect........\n')
        # 等待客户机的连接    # 返回值是个元组包括（新生成一个客服套接字，客户机的adddress（IP，port））
        client_sever_socket, client_address = tcp_socket.accept()
        print('a client({}) loading.....\n'.format(client_address))
        while True:
            # 接收信息并返回消息已接受
            recv_content = client_sever_socket.recv(1024)
            # 如果这里的返回值是有东西的说明客户需要服务器，如果这里的recv_content为空就说明客户端的需求结束
            if recv_content:
                print(recv_content.decode('gbk'))
                client_sever_socket.send('-------对方接收成功！-------'.encode('gbk'))
            else:
                break
        # 关闭客服套接字
        client_sever_socket.close()
        print('client leave\n')
    # 关闭初始套接字
    tcp_socket.close()

if __name__ == '__main__':
    '''tcp实现多个客户循环多次服务服务器'''
    main()








